/*
Copyright (C) 2008-2009  Santiago Carot Nemesio
email: scarot@libresoft.es

This program is a (FLOS) free libre and open source implementation
of a multiplatform manager device written in java according to the
ISO/IEEE 11073-20601. Manager application is designed to work in 
DalvikVM over android platform.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/
package ieee_11073.part_20601.fsm;

import es.libresoft.openhealth.events.Event;
import es.libresoft.openhealth.events.EventType;
import ieee_11073.part_20601.asn1.ApduType;
import ieee_11073.part_20601.fsm.manager.MDisconnected;

	/**
	 * This is the top level class for all states of the association  state machine defined
	 * in ISO/IEEE 11073-20601.
	 */
public abstract class State {

	protected StateHandler state_handler;
	
	public State (StateHandler handler) {
		this.state_handler = handler;
	}
	
	/**
	 * Process an APDU that has arrived on the input data stream
	 * @param apdu
	 */
	public abstract void process(ApduType apdu);
	
	/**
	 * Process an outer event
	 * @param apdu
	 */
	public abstract void processEvent(Event event);
	
	public abstract String getStateName();
}
